/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package EntidadesController;

import java.sql.*;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author fernando
 */
public class Departamento {

    private String codigodep = "";
    private String sigla = "";
    private String descricao = "";
    private SQLException erro = new SQLException();
    static Connection conexao = null;
    static Statement estado = null;
    static ResultSet rs;
    private boolean render=false;
    private String msgerro;

    public boolean isRender() {
        return render;
    }

    public void setRender(boolean render) {
        this.render = render;
    }
    public String getMsgerro() {
        return msgerro;
    }

    public void setMsgerro(String msgerro) {
        this.msgerro = msgerro;
    }

    public Departamento() {
        conexao = new Conexao().Acesso();
    }

    public String inserir() throws SQLException {
        String result_inserir = "failure";
        try {
            estado = conexao.createStatement();
            estado.execute("INSERT INTO departamento(codigodep,sigla,descricao) VALUES ('" + codigodep + "','"
                    + sigla + "','" + descricao + "')");
            estado.close();
            result_inserir = "success";
            render = false;
        } catch (SQLException e) {
            this.erro = e;
            msgerro = erro.getLocalizedMessage();

            if (msgerro.contains("pk_matriculadisc")&&msgerro.contains("unicidade"))
            {msgerro = "Esse número de matrícula ja está cadastrado!";}
            //estado.execute("ROLLBACK");
            estado.close();
            result_inserir = "failure";
            render = true;
        }
        System.out.println("usuer " + result_inserir);
        return result_inserir;
    }

    public String busca() throws SQLException {
        String result_busca = "failure";
        try {
            estado = conexao.createStatement();
            rs = estado.executeQuery("SELECT * FROM departamento WHERE codigodep = '" + codigodep + "'");
            if (rs.next()) {
                codigodep = rs.getString(1);
                sigla = rs.getString(2);
                descricao = rs.getString(3);
            }
            rs.close();
            estado.close();
        } catch (SQLException e) {
            this.erro = e;
            result_busca = "failure";
        }
        return result_busca;
    }

    public String editar() {
        String result_inserir = "failure";
        try {
            estado = conexao.createStatement();
            estado.execute("BEGIN WORK");
            estado.execute("update departamento set sigla = '" + sigla + "' where codigodep='" + codigodep + "'");
            estado.execute("update departamento set descricao = '" + descricao + "' where codigodep='" + codigodep + "'");
            estado.execute("COMMIT");
            estado.close();
            result_inserir = "success";
        } catch (SQLException e) {
            this.erro = e;
            result_inserir = "failure";
        }
        return result_inserir;
    }

    public String delete() throws SQLException {
        String result_delete = "failure";
        try {
            estado = conexao.createStatement();
            rs = estado.executeQuery("DELETE FROM departamento WHERE codigodep = '" + codigodep + "'");
            rs.close();
            estado.close();
        } catch (SQLException e) {
            this.erro = e;
            result_delete = "failure";
        }
        return result_delete;
    }

    /*public static void main(String[] args) throws SQLException {
    Departamento a = new Departamento();
    a.setCodigodep("0123");
    a.setDescricao("aaaaaaaaa");
    a.setSigla("accc");
    System.out.println("aaaa"+a.inserir());
    a.setCodigodep("0123");
    a.setDescricao("bbbbbbbbbb");
    a.setSigla("tttt");
    System.out.println("bbbb"+a.delete());
    a.setCodigodep("0868");
    a.setDescricao("deposdhoih");
    a.setSigla("abha");
    a.inserir();
    a.setCodigodep("0123");
    a.busca();
    }*/
    
    public String getErro() {
        return erro.getMessage();
    }

    public String getCodigodep() {
        return codigodep;
    }

    public void setCodigodep(String codigodep) {
        this.codigodep = codigodep;
    }

    public String getDescricao() {
        return descricao;
    }

    public void setDescricao(String descricao) {
        this.descricao = descricao;
    }

    public String getSigla() {
        return sigla;
    }

    public void setSigla(String sigla) {
        this.sigla = sigla;
    }

    /*
     * Este metodo retorna uma lista de strings, necessaria para exibir
     * a combobox na interface com o usuario e nao tda a tabela.
     */
    public List<String> getSiglaDepartamento() {

        List<String> itens = new ArrayList<String>();
        try {
            estado = conexao.createStatement();
            rs = estado.executeQuery("SELECT * FROM Departamento");

            while (rs.next() == true) {

                // Segunda coluna da tabela: variavel 'sigla';
                itens.add(rs.getString(2));
            }
            return itens;
        } catch (SQLException ex) {
            this.erro = ex;
            System.out.println("A tabela esta vazia.");
            Logger.getLogger(Curso.class.getName()).log(Level.SEVERE, null, ex);
            return null;
        }
    }
}
